package com.coursehub.course.service;

import com.coursehub.course.entity.Material;

import java.util.List;
import java.util.Optional;

public interface MaterialService {
    
    /**
     * 上传资料
     */
    Material uploadMaterial(Material material);
    
    /**
     * 根据章节ID获取资料列表
     */
    List<Material> getMaterialByChapter(String chapterId);
    
    /**
     * 根据课程ID获取资料列表
     */
    List<Material> getMaterialByCourseId(String courseId);
    
    /**
     * 根据课程ID和章节ID获取资料列表
     */
    List<Material> getMaterialsByCourseAndChapter(String courseId, String chapterId);
    
    /**
     * 根据资料ID获取资料
     */
    Optional<Material> getMaterialById(String materialId);
    
    /**
     * 删除资料
     */
    void deleteMaterial(String materialId);
    
    /**
     * 验证资料是否存在
     */
    boolean validateMaterial(String materialId);
    
    /**
     * 根据课程ID获取所有资料ID列表
     */
    List<String> getMaterialIdsByCourse(String courseId);
    
    /**
     * 根据章节ID获取所有资料ID列表
     */
    List<String> getMaterialIdsByChapter(String chapterId);
    
    /**
     * 获取学生已学习的资料
     */
    List<Material> getLearnedMaterialsByStudent(String userId, String courseId);
    
    /**
     * 标记资料为已完成状态
     */
    void markMaterialAsFinished(String userId, String materialId);
}